package code1.linkedlist;

/**
 * 原题链接：https://leetcode.cn/problems/swap-nodes-in-pairs/
 */

public class P24 {

    public class ListNode {
        int val;
        ListNode next;
        ListNode() {}
        ListNode(int val) { this.val = val; }
        ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }

    //不改变节点的值两两交换节点，过程模拟
    public ListNode swapPairs(ListNode head) {
        ListNode myHead=new ListNode(0);
        myHead.next=head;       //创建虚拟头结点
        ListNode cur=myHead;
        while(cur.next!=null && cur.next.next!=null){
            ListNode i=cur.next;
            ListNode j=cur.next.next;
            ListNode tmp=j.next;
            //三步交换
            cur.next=j;
            j.next=i;
            i.next=tmp;
            cur=i;      //改变当前节点的位置
        }
        return myHead.next;
    }
}
